package com.gather;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

public class Test04 {
    public static void main(String[] args) {
        System.out.println("ArrayList相关Api学习");
        /**
         * 1.add()    添加
         * 2.set()    修改
         * 3.remove() 删除
         * 4.get()    获取
         * 5.size()   获取长度
         */
        ArrayList<String> strList = new ArrayList<>();
        strList.add("hello");
        strList.add("world");
        strList.add("PHP is");
        strList.add("best world");

        System.out.println(strList); // [hello, world, PHP is, best world]

        // 修改操作
        strList.set(2,"java is");
        System.out.println(strList); // [hello, world, java is , best world]
        // 删除操作
        // 删除指定的值
        strList.remove("world");
        int size = strList.size();
        System.out.println(size); // 3
        // 删除指定位置
        strList.remove(strList.size() - 1);// 删除最后一个元素
        System.out.println(strList);// [hello, java is]
        // 获取操作
        String s = strList.get(0);
        System.out.println(s); // hello

        /**
         * arrayList遍历三种方式
         * 1、使用了forEach 或 fori
         * 2、obj.toArray() 转成数组遍历
         * 3、迭代器 Iterator
         */
        System.out.println("第一种方式遍历链表");
        for (String s1 : strList) {
            System.out.println(s1);
        }

        for (int i = 0; i < strList.size(); i++) {
            System.out.println(strList.get(i));
        }

        System.out.println("第二种遍历方式 链表转数组操作");
        String[] strArray = new String[strList.size()];
        strList.toArray(strArray);
        for (String s1 : strArray) {
            System.out.println(s1);
        }

        System.out.println("第三种使用迭代器");
        Iterator<String> stringIterator = strList.iterator();
        while (stringIterator.hasNext()) {
            String next = stringIterator.next();
            System.out.println(next);
        }

        System.out.println("===其他引用数据类型====");
        ArrayList<Integer> integers = new ArrayList<>();
        integers.add(600);
        integers.add(200);
        integers.add(180);
        integers.add(380);
        integers.add(80);
        // 遍历
        Iterator<Integer> integerIterator = integers.iterator();
        while (integerIterator.hasNext()) {
            Integer next = integerIterator.next();
            System.out.println(next);
        }
        System.out.println("使用工具类 Collections 排序");
        // 使用工具类 Collections 排序
        Collections.sort(integers);// 小到大排序
        for (Integer integer : integers) {
            System.out.println(integer);
        }
    }
}
